<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // async  和 await关键字
        // 注意事项:   一定是和promise对象在一起的 
        // 意义: 让异步代码看起来像同步代码



        // async的用法  
        // 直接写在函数的前面  表示这个函数是个异步函数 
        // 意义: 对外声明  函数里边可以使用await关键字 


        // await的用法  
        // 必须写在 有async 关键字的函数内 
        // 后边等待的内容 一定是个promise对象

        // 意义:  原来then 接收的结果  有了await 可以直接定义变量接收
        // await 只能接收 resolve 执行后的 状态   不接收 reject执行后的状态 
        // await 只能接收原本then的结果 不能接受原本 catch的结果

        function longfei() {
            const p = new Promise(function(resolve,reject){
                const time = Math.random() * 3000 + 2000;
                setTimeout(()=>{
                    if(time<3500){
                        resolve('ok')
                    }
                    else{
                        reject('fail')
                    }
                },time)
            })

                return p;
            }

         async function fn1(){
            const r1 = await longfei();
            console.log(r1);
            const r2 = await longfei();
            console.log(r2);
            const r3 = await longfei();
            console.log(r3);
            const r4 = await longfei();
            console.log(r4);
         }


         fn1()


         // 让面 await只能接收 resolve的结果 不能接受reject的结果 
         // 如果有reject的结果 直接报错 
    </script>
</body>

</html>